Nous allons déterminer la route pour aller de la machine source à la destination. La source est forcément l'un des deux ordinateurs portables. La destination peut être entrée avec la commande ping suivie d'une adresse IP ou d'un nom de domaine.
Soit le programme :
def est_ipv4(ad):
# Permet de savoir si l'adresse ad est au format IPV4
ad = ad.split('.')
if len(ad) != 4:
return False
for a in ad:
if not (0 <= int(a) <= 255):
return False
return True
def net_id(adresse, masque):
# Renvoie l'adresse du réseau
netid = [0]*4
ad = adresse.split('.')
ma = masque.split('.')
for i in range(4):
netid[i] = str(int(ad[i])&int(ma[i]))
netid = '.'.join(netid)
return netid
def host_id(adresse, masque):
# Renvoie l'adresse de la machine
hostid = [0]*4
ad = adresse.split('.')
ma = masque.split('.')
for i in range(4):
hostid[i] = str(int(ad[i])&(256+~int(ma[i])))
hostid = '.'.join(hostid)
return hostid
# Pour les PC et serveurs
identifiants = {"172.16.100.10":"Portable 1", "172.16.100.12":"Portable 2",
"172.16.100.2":"Serveur DNS", "213.186.33.19":"Serveur web Lycée",
"217.70.184.56":"Serveur web Qwant", "194.4.208.20":"Serveur web fdj"}
# Serveur de nom de domaine
dns = {"www.qwant.fr":"217.70.184.56", "www.fdj.fr":"194.4.208.20",
"www.monlycee.fr":"213.186.33.19"}
# Commutateur (switch)
table_ARP = {"172.16.100.10":"5D:4C:07:CD:C2:62", "172.16.100.12":"86:F7:BD:F0:1F:00",
"172.16.100.2":"F3:43:84:E0:47:D0"}
# Routeurs
table_R1 = {"172.16.0.0":[None, "172.16.100.1"],
"213.186.0.0":[None, "213.186.33.1"],
"217.70.0.0":["192.168.0.1", "192.168.0.2"],
"194.4.0.0":["192.168.0.1", "192.168.0.2"]}
table_R2 = {"172.16.0.0":["192.168.0.2", "192.168.0.1"],
"213.186.0.0":["192.168.0.2", "192.168.0.1"],
"217.70.0.0":[None, "217.70.184.1"],
"194.4.0.0":[None, "194.4.208.1"]}
source = input("Votre adresse IP : ")
destination = input("ping ")
1. Complétez ce programme afin de conserver l'adresse IP destination ou de remplacer le nom de domaine par son adresse IP. On donne :
# On vérifie si adresse IPV4 ou nom de domaine
if not est_ipv4(..................................):
destination = ............................................
print("La route pour aller vers ", destination)
source = identifiants.get(......................)
print("source : ", source)
print("\t--> Switch")
Si la destination est directement connectée au switch, la route est déterminée, sinon il faut aller vers le routeur R1. De la même manière, on détermine s'il faut aller vers le routeur R2 ou s'arrêter à R1.
2. Complétez le programme.
# L'adresse est-elle dans le sous-réseau local ?
if table_ARP.get(..........................) == None:
print("\t--> ...............................")
masque = "255.255.0.0"
netid = net_id(.........................................)
# L'adresse est-elle dans le réseau local ?
if table_R1.get(netid)[0] != .....................:
print("\t--> ...........................")
destination = ......................................
print("destination : ", destination)
Source : https://lesmanuelslibres.region-academique-idf.fr Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/snt-seconde ou directement le fichier ZIP Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0